/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.com.menosehmais.controller.rest;

import br.com.caelum.vraptor.Get;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.Validator;
import br.com.menosehmais.business.ContaBO;
import br.com.menosehmais.business.ContratoBO;
import br.com.menosehmais.business.ServicoDeDesignBO;
import br.com.menosehmais.business.ServicoDeMarketingBO;
import br.com.menosehmais.dto.ContratoDTO;
import br.com.menosehmais.framework.presentation.AbstractRestController;
import br.com.menosehmais.framework.security.UserSession;
import br.com.menosehmais.model.ContaDO;
import br.com.menosehmais.model.ContratoDO;
import br.com.menosehmais.model.EmpresaDO;
import javax.servlet.http.HttpServletRequest;

/**
 *
 * @author Junior JAFJ
 */
@Resource
public class ManterContratoController extends AbstractRestController {
    private ContratoBO contratoBO;
    private ServicoDeDesignBO servicoDesignBO;
    private ServicoDeMarketingBO servicoMarketingBO;
    private UserSession userSession;
    private ContaBO contaBO;

    public ManterContratoController(HttpServletRequest request, Result result,
           Validator validator, ContratoBO contratoBO, ServicoDeDesignBO servicoDesignBO,
           ServicoDeMarketingBO servicoMarketingBO, ContaBO contaBO, UserSession userSession) {
          super(request, result, validator);
          this.contratoBO = contratoBO;
          this.servicoDesignBO = servicoDesignBO;
          this.servicoMarketingBO = servicoMarketingBO;
          this.userSession = userSession;
          this.contaBO = contaBO;
    }

    /**
     * Para este metodo o id especificado eh o que define
     * se o filtro de listagem devera ser feito
     * por servicos de Designer ou Marketing, conforme
     * pré-selecionado pelo operador
     */
    @Get
    @Path("/rest/manterContrato/")
    public void show(ContratoDTO contratoDTO) {
        ContratoDO contratoDO = new ContratoDO();
        EmpresaDO empresaDO;
        ContaDO contaDO = contaBO.selectById(userSession.getAccountInfo().getAccountId());
        
        if (contaDO instanceof EmpresaDO) {
//            if (contratoDTO.getTipoContrato().equalsIgnoreCase("servicoDesign")) {
//
//                empresaDO = (EmpresaDO) contaDO;
//                for (ContratoDO c : empresaDO.getContratos()) {
//                    contratoDO.getServicosDesign().addAll(servicoDesignBO.listarServicosDesign(c));
//                }
//
//            } else if (contratoDTO.getTipoContrato().equalsIgnoreCase("servicoMarketing")) {
//                empresaDO = (EmpresaDO) contaDO;
//                for (ContratoDO c : empresaDO.getContratos()) {
//                    contratoDO.getServicosMarketing().addAll(servicoMarketingBO.listarServicosMarketing(c));
//                }
//            }
        }

        /*
         * Captando os demais contratos de servicos de Marketing e Design
         * que não foram ainda associados a conta existente na sessao
         */
        contratoDO.setServicosDesignNaoSelecionado(contratoBO.listarDesignNaoSelecionado(contratoDO, servicoDesignBO.listarTodosServicosDesign()));
        contratoDO.setServicosMarketingNaoSelecionado(contratoBO.listarMarketingNaoSelecionado(contratoDO, servicoMarketingBO.listarTodosServicosMarketing()));

        
        
    }
}
